What does it mean for something to be "in production"?

Thu Feb 15 2024

If we all had our way in the world of development, everything from new software to features and apps would be flawless the moment they are released from the development environment and into the production environment. Unfortunately, that's not how things work—until that day of instant perfection arrives (hint: it's never happening), we'll have to rely on the various stages in the development pipeline that leads to the production environment.

Understanding the production environment

A production environment is a real-time setting where the latest versions of software, products, or updates are pushed into live, usable operation for the intended end users. One very common example of this would be a company updating a new version of their app and making it live for all users. The production environment essentially hosts the new app so that end users can see, experience, and interact with it.

The production environment differs from the development environment, where software is actually built and coded, and the staging environment, where final pre-release testing occurs. A test environment provides engineers with a place to execute more complex and time-consuming tests for new code using both automation and non-automated techniques. The staging environment can be viewed as a sort of behind-the-scenes, pre-production environment where a new release can be tinkered with and tested before going live.

Key differences between production and other environments

The test environment focuses on complex testing of individual components, using both automated and manual techniques. Testers can create multiple environments for parallel testing if needed. The testing environment is typically focused on individual components instead of the new application as a whole. For more insights on creating a culture of experimentation and the necessary infrastructure, you can read about it in Building a Culture of Experimentation.

The staging environment mirrors the production environment as closely as possible so developers can run the new release and observe how it will potentially perform before the rollout. Some of the tests commonly run in a staging environment include:

  • Unit Testing - determines whether individual functions or units are working as intended. Learn more about Unit Testing.

  • Regression Testing - confirms that all previous features and functionality included in the new release still work as expected. For a deeper understanding, see Experimentation Gap.

  • Integration Testing - tests all software dependencies and modules together as a single group to evaluate system functionality and compliance. Explore more on Advanced Statistical Techniques.

  • Chaos Testing - helps provide a better sense of how the new software or app will hold up under different types of chaotic conditions. For practical applications, review Trustworthy Online Controlled Experiments.

Activities in a production environment

A/B testing involves comparing two different versions of the same release. You push the new version to one group while the other receives the current version. This provides valuable insights and uncovers issues that need addressing. For more detailed exploration of A/B testing, check out this article or learn about the experimentation gap. You can also find valuable resources on sequential testing.

Canary testing rolls out a new release to a small percentage of users. If they respond unfavorably or experience issues, only a small percentage are affected. This mitigates risk rather than impacting the entire user base. For a deeper dive into how canary testing fits into larger experimentation frameworks, see this guide.

With real-time application monitoring and performance testing, you can determine if the app is performing poorly in certain markets. You can also run load tests and stress tests. This ensures the release behaves well when there are spikes in production traffic. For more insights into performance testing, check out this article or learn from LinkedIn's experimentation engine.

The role of feature flags in production

Feature flags enable or disable specific functionalities without redeploying code. This allows for safe testing in live environments. You can test new features in production with real users and real data.

Feature flags also provide a quick rollback mechanism if issues arise. If a problem is detected, you can instantly turn off the feature. This minimizes the impact on users and reduces risk.

Some key benefits of feature flags in production include:

By decoupling deployments from releases, feature flags enable more frequent and safer production deployments. You can ship code to production that is hidden behind a flag. This code can then be selectively exposed to users when ready.

Feature flags also enable progressive delivery practices like canary releases. You can release a feature to a small subset of users first. If no issues arise, the feature can then be gradually rolled out to more users.

Benefits and challenges of testing in production

Testing in production provides genuine user data and insights. This real-world feedback helps improve software reliability and performance. You can observe how features perform under actual conditions.

Testing in production can also surface edge cases and scenarios that are difficult to anticipate or simulate in staging. Real user interactions often uncover issues that don't appear in pre-production environments. Monitoring and analyzing production traffic is invaluable for identifying and resolving problems.

However, testing in production requires careful risk management. Exposing bugs or performance issues to end users can negatively impact their experience. Faulty releases can erode user trust and satisfaction.

To mitigate these risks, consider techniques such as:

By combining real-world insights with robust safety measures, you can reap the benefits of testing in production while minimizing risks. Careful planning and execution are key to striking the right balance. When done effectively, production testing is a powerful tool for delivering reliable, high-performing software.


Try Statsig Today

Get started for free. Add your whole team!
We use cookies to ensure you get the best experience on our website.
Privacy Policy